#!/bin/bash
# Schips
PIC_OUTPUT_DIR="vx_images"
function downloadLink ()
{
    local link="$1"
    local outputdir="$2"

    echo $link
    wget --timeout=15  -t 3 -c $link >/dev/null 2>&1 -P $outputdir && return 0
    echo "$link timeout"
    sleep 0.5
    return 1
}

# 替换文件内容（非大小写敏感）
function file-replace-string-no-case-sensitivity(){
    local fin="$1"
    local old="$2"
    local new="$3"
    if [ -z "$fin" ]; then
        echo "$0 file old new"
        return 1
    fi
    local oldt=`echo $old| sed 's:\/:\\\/:g'`
    local newt=`echo $new| sed 's:\/:\\\/:g'`
(
cat <<EOF
sed 's/$oldt/$newt/gI' -i "$fin"
EOF
) > /tmp/.file.sh
    source /tmp/.file.sh
    rm /tmp/.file.sh
}

# 解析md文件，本地化图像链接（下载其中的图像,同时修改有关的文件内容）
function markdownFileLocalized ()
{
    local file="$1"
    if [ ! -f "$file" ]; then
        echo " need  file.md outputdir"
        return 1
    fi

    local outputdir="$2"
    if [ -z "$outputdir" ]; then
        echo " need  file.md outputdir"
        return 1
    fi
    mkdir -p $outputdir || return 1

    ## 获取所有的img连接
    local link=""
    local linkLocal=""
    #local allLines=`grep -oP "\!\[.*?]\(.*?\)" "$file"`
    #for expression in $allLines
    grep -oP "\!\[.*?]\(.*?\)" "$file" | while read expression
    do
        ## 检查是否为网络链接
        local isWebLink=`echo "$expression"| grep -F "(http"`
        if [ -z "$isWebLink" ]; then
            echo "SKIP $expression"
            continue
        fi
        #echo "$expression"

        ## 提取链接的地址
        link=`echo $expression | sed  -E  "s/(\!\[.*]\()(.+)(.*\))/\2/g"`

        ## 尝试下载
        downloadLink `echo "$link"`  $outputdir || continue
        ## 下载成功以后，替换对应的链接
#       把
#          ![123](https://img2020.cnblogs.com/blog/2120938/202012/2120938-20201219113846689-729653061.png)
#       变成
#          ![123](vx_images/2120938-20201219113846689-729653061.png)
        linkLocal="$outputdir/`basename $link`"
        file-replace-string-no-case-sensitivity "$file" "$link" "$linkLocal"
    done
}
#markdownFileLocalized "$1"  $PIC_OUTPUT_DIR

# 指定处理markdown目录
fromDir="$1"
if [ ! -d "$fromDir" ]; then
    fromDir=parserResult1
fi
parserDir=parserResult2
rm $parserDir -rf; mkdir -p $parserDir

cp -rfv   $fromDir $parserDir
find "$parserDir" -name "*.md" | while read file
do
    echo "$file"
    markdownFileLocalized  "$file"  $PIC_OUTPUT_DIR
done

mv $PIC_OUTPUT_DIR $parserDir
